package com.mmy.service.impl.line;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;

import com.mmy.dao.line.TLinePlanRepository;
import com.mmy.dao.line.VLinePlanRepository;
import com.mmy.domain.line.TLinePlan;
import com.mmy.domain.line.VLinePlan;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.line.LinePlanService;

@Service
public class LinePlanServiceImpl /* implements LinePlanService */ {
	@Autowired
	private VLinePlanRepository vLinePlanRepository;
	@Autowired
	private TLinePlanRepository tLinePlanRepository;
	/**
	 * 函数功能说明：通过线路ID查询：未过期的计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人liys
	 * @date 创建日期  2021.1.8
	 */
	public List<VLinePlan> findPlanValid(int iLineID) {
		
		return vLinePlanRepository.findPlanValid(iLineID);
	}
	/**
	 * 通过计划单ID查询
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 */
	public VLinePlan findByPlanID(int iPlanID) {

		return vLinePlanRepository.findByPlanID(iPlanID);
	}

	/**
	 * 函数功能说明： 查询所有近郊游计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findAllSurrouding(int iType) {

		return vLinePlanRepository.findAllSurrouding(iType);
	}
	/**
	 * 函数功能说明： 查询线路的近郊游计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 liys
	 * @date 创建日期  2021.01.20
	 */
	
	  public List<VLinePlan> findLinePlan(int iLineID){ 
		  
		  return vLinePlanRepository.findLinePlan(iLineID);
	
	  }
	
	
	/**
	 * 函数功能说明： 查询有效期内的近郊游计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 liys
	 * @date 创建日期 2021.1.4
	 */
	public List<VLinePlan> findNowSurrouding(int iType) {

		return vLinePlanRepository.findNowSurrouding(iType);
	}	
	
	/**
	 * 函数功能说明：通过线路ID查询计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findByLineID(int iLineID) {

		return vLinePlanRepository.findByLineID(iLineID);
	}
	
	/**
	 * 函数功能说明：通过线路ID查询有效的计划单（未过期）
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findByLineIdNow(int iLineID){

		return vLinePlanRepository.findByLineIdNow(iLineID);
	}
	
	
	/**
	 * 函数功能说明：通过ID查询计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单对象
	 * @throws 异常处理说明
	 * @author 创建人liys
	 * @date 创建日期  2020.12.24
	 */
	public TLinePlan TfindByPlanID(int planID) {
		return tLinePlanRepository.findByPlanID(planID);
	}
	
	/**
	 * 获取计划单最大编码
	 * 
	 * @return 返回值说明 计划单编码
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.13
	 */
	public String getMaxPlanID() {
		// 返回计划单最大编码
		Object objCode = tLinePlanRepository.getMaxPlanID();
		String strPlanID = "";
		if (objCode != null) {
			strPlanID = objCode.toString();
		}
		return strPlanID;
	}

	/**
	 * 函数功能说明：创建计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public void save(int planID) {

		tLinePlanRepository.save(planID);
	}

	/**
	 * 函数功能说明：创建 修改计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public void save(TLinePlan tLinePlan) {

		tLinePlanRepository.save(tLinePlan);
	}

	/**
	 * 函数功能说明：删除计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public void delLinePlan(List<Integer> lstPlanID) {

		tLinePlanRepository.delLinePlan(lstPlanID);
	}
	
	/**
	 * 函数功能说明：删除线路集合的计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 liys
	 * @date 创建日期 修改时间 2021.01.27
	 */
	public void delByLineIdList(List<Integer> lstPlanID) {
		
		tLinePlanRepository.delByLineIdList(lstPlanID);
	}
	
	/**
	 * 函数功能说明：查询计划单近郊游ID
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<Integer> findSurroudingNum() {

		return tLinePlanRepository.findSurroudingNum();
	}

	/**
	 * 函数功能说明：通过线路ID和时间查询：当天的计划单 
	 *
	 * @param 参数说明
	 * @return 返回值说明 list
	 * @throws 异常处理说明
	 * @author 创建人liys
	 * @date 创建日期  2021.1.11
	 */
	public List<Map<String,Object>> findPlanValidMap(int iLineID,Date date) {
		return vLinePlanRepository.findPlanValidMap(iLineID,date);
	}
}
